//
// Created by Jisam on 2024/8/9 20:17.
// solve P2404 自然数的拆分问题
#include <bits/stdc++.h>

#define PSI pair<string,int>
#define PII pair<int,int>
#define PDI pair<double,int>
#define PDD pair<double,double>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>

#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
using u32 = unsigned;
using i64 = long long;
using u64 = unsigned long long;
int n;
using namespace std;
int a[10001]={1};
void search(int s,int t){
    for(int i = a[t - 1];i <= s ; i ++){
        if(i < n)
        {
            a[t] = i;
            s -= i;
            if (s == 0) {
                for (int i = 1; i <= t - 1; i++)//输出一种拆分方案
                    cout << a[i] << "+";
                cout << a[t] << endl;
            } else search(s, t + 1);
            s += i;
        }
    }
}
void solve() {
    cin >> n;
    search(n,1);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T = 1;
//    cin >> T;
    while (T--) solve();
//    cout << "\n"[];
    return 0;
}